System and method for enhanced symbol generation

ABSTRACT

According to some embodiments, an input symbol may be received, and a hard symbol may be generated from the input symbol. A probability associated with the hard symbol may be calculated along with a probability associated with a previous hard symbol. An enhanced symbol may then be determined as a function of a comparison between the probability associated the hard symbol and the previous hard symbol.

BACKGROUND

A Linear Adaptive Filter (LAF) 100 is shown in FIG. 1. The LAF 100 has a slicer 110. Generally, such a slicer 110 may be defined as a device that truncates input data and outputs data as a value that is closest to a defined allowable value. The slicer 110 may, for example, provide an estimate (hard symbol 115) associated with a value of a received symbol 112.

Graphically, this operation may place decision boundaries between eight possible hard symbols, such as those illustrated in FIG. 2. These boundaries may be, for example, the mid points between consecutive hard symbols.

According to some embodiments, in the example, given the input symbol 112 (which shall be referred to as “y”), the hard symbol 115 (“Ŷ”) is therefore:

-   -   If 4<=y<6 then Ŷ=5     -   If 2<=y<4, then Ŷ=3     -   etc.

Thus, as long as the input symbol 112 is received within a decision boundary corresponding to the input symbol 112 as it was originally transmitted, the hard symbols 115 are correct. However, due to such factors as noise, the received input symbols 112 may fall within a wrong boundary, causing the slicer 110 to generate the wrong hard symbol 115. For example a symbol ‘3’ might be transmitted, but an input symbol ‘4.25’ may be received. Thus, the slicer 110 outputs the incorrect hard symbol 115 value of ‘5.’ The case of 20 dB SNR is shown in FIG. 2 and illustrates the instances of wrong decisions.

Turning back to FIG. 1, in the LAF 100, soft symbols 155 {tilde over (y)} [k] (the input to slicer 110) are generated from input symbols 112 that have been filtered through a feed forward filter 140 and compared to hard symbols 115 that have been filtered through a feed back filter 120 via a comparator 130. Soft output 115 can be used to operate, for instance, a Viterbi Decoder (not illustrated).

Generally, filters 120 and 140 can compensate for various transitory changes/error conditions in input symbols 112. An error e(k) 142,representing the difference in value between soft symbol {tilde over (y)} 155 and hard symbol 115, can be used to update coefficients of filter 120 taps and filter 140 taps using a coupled least mean squared (LMS) adapter 145.

Input symbols 112 may have three components: an original (wanted) transmitted signal (χ), a reflections component (δχ), and an Additive Gaussian Noise (AWGN). Assuming no AWGN and other imperfections in LAF 100, coefficients of taps of FBF 120 and FFF 140 will typically converge so that an error e(n), (determined by an error determiner), will be zero, and the coefficients may converge to a fixed set.

However, in real-world scenarios, even after filters 120, 140 have converged, the slicer error 142 will typically be non-zero due to the presence of random noise. As the random noise level gets higher, as in case of low SNR (signal to noise ratio) input symbols 112, the hard symbols 115 {tilde over (y)} [k] applied to filters 120 and 140 will be wrong. This will, in turn, cause a greater slicer error 144 e(k) value, which may cause a faulty programming of the filter's 120 coefficients and filter 140 to change in the wrong direction when updated by the LMS 145, which in turn creates more errors and ultimately the filter 100 may become becomes unstable.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a figure of a linear adapter filter.

FIG. 2 a figure of illustrating boundary conditions for use with noisy input symbols according to some embodiments.

FIG. 3 is a linear adapter filter with a probabilistic evaluator according to some embodiments.

FIG. 4 is an illustration of a difference equation for use with the probabilistic evaluator according to some embodiments.

FIG. 5 is a graph illustrating determining a value of Ŷ0 based on the received symbol.

FIG. 6 illustrates boundaries and decisions according to some embodiments.

FIG. 7 is a method for generating an enhanced symbol according to some embodiments.

FIG. 8 is a second method for generating an enhanced symbol according to some embodiments.

FIG. 9 is a probabilistic evaluator according to some embodiments.

FIG. 10 is a graph of simulated errors comparing a conventional LAF to an LAF of the present disclosure according to some embodiments.

FIG. 11 is a graph of simulated convergence times comparing a conventional LAF to an LAF of the present disclosure according to some embodiments.

DETAILED DESCRIPTION

Referring first to FIG. 3, a block diagram of an apparatus 200 is illustrated. In some embodiments, the apparatus 200 may be a linear adapter filter. Generally, in some embodiments, apparatus 200 uses a parity bit, such as a Trellis-Coded Modulation (TCM), to reduce errors in feed-back. A TCM parity bit may be embedded in each input symbol 212 to the slicer 210. Generally, by comparing the probability of a parity of a present input symbol 212 being read correctly of a present hard symbol 215 versus the likelihood of parity bits and/or non-parity bits of previous input symbols 212 being read correctly within a previous hard symbol 215, a probabilistic evaluator 225 of the apparatus 200 generates a better estimate of the correct symbol output, therefore reducing the probability of the wrong information being used to program filters 220 and 240. In other words, in some embodiments, the apparatus 200 may exploit an encoding of previous input symbols 212 in order to predict whether a currently-received input symbol 212 is likely to be correctly decoded or not, and if not, to take appropriate action, as will be detailed below.

The output of the probabilistic evaluator 225 is an enhanced symbol Ŷ_(enhanced) 275, which is conveyed both to an error differentiator 235 and an input symbol differentiator 230. Within error differentiator 235, a slicer error e_(k) 242 is generated by comparing a soft symbol {hacek over (y)} 255 with the enhanced symbol 275 in the error determinor 235. A coupled filter programmer 245, such as a LMS adapter, employs slicer error 242 e_(k) and may employ old values of the taps of filters 220, 240 to update both of these taps to generate new tap values. Soft symbol {hacek over (y)} 255 is therefore a function of at least an enhanced symbol 275. In some embodiments, the soft symbol {hacek over (y)} 255 is a function of previous enhanced symbols 275.

Generally, the apparatus 200 uses the relation between previous symbols 212 and the current symbol 212 to get an estimated value of the current symbol 112 Ŷ_(predicted). As will be discussed below, in probabilistic evaluator 225, a mismatch between Ŷ_(predicted) predicted symbol value (based on the last two hard symbols Ŷ 215) and the hard symbol Ŷ 215 for the present input symbol 212, is an indication of a potential decoding error (due to such factors as excess noise). The hard symbol 215 may then be corrected or re-evaluated accordingly. The probabilistic evaluator 225 may be used as part of a decision feedback equalizer, such as with FFF Tap 220, operating in low SNR conditions.

In some embodiments, the apparatus 200 may predict the maximum probability that a value of a presently-received symbol 212 is decoded accurately as the enhanced symbol 275 based upon characteristics of the present hard symbol 215. For ease of explanation, this probability is referred to as P(Ŷ), and is a probability that the originally determined hard code symbol 215 is correct. The apparatus 200 then makes a predicted value of at least part of the hard symbol 215, based on probabilities associated with past two iterations of previous symbols 212. For ease of explanation, this is referred to as P(Ŷ)_(predicted). Generally, the probabilistic determinor 225 first compares (Ŷ) with (Ŷ)_(predicted) to see if they are equal. If they are, Ŷ is output as enhanced symbol 275. However, if they are not, probabilistic determinor 225 compares the P(Ŷ) to the P(Ŷ_(predicted)) to determine which value has the higher probability of being correct, and uses the higher probability value as part of enhanced symbol 275.

Generally, many digital communication systems utilize convolution encoding as an outer forward error correction (FEC) layer. To help clearly explain, ATSC will be used as an example. However, other encoding can be used with apparatus 200.

The apparatus 200 exploits the fact that input symbols 212 may be convolutionally encoded into specific values. In ATSC, these specific values are those in the set [−7, −5, −3, −1, 3, 5, 7]. Each set is represented by a 3-bit number (y0, y1, y2). The following Table 1 represents this. For example, the symbol of −1 may be expressed as y0(−1), y1(1), y2(0).

TABLE 1 Mapping of the 3 Bits to the symbol value Y2 Y1 Y0 Symbol 0 0 0 −7 0 0 1 −5 0 1 0 −3 0 1 1 −1 1 0 0 1 1 0 1 3 1 1 0 5 1 1 1 7

Furthermore, for a given input symbol 212, bit y0 is generated from previous values of y0 and y1. In particular, as is illustrated in FIG. 4, a current value of y(0) of an input symbol 212 is are a function of the y0(n) value of an input symbol 212 of 2 symbols ago (“n−2”), exclusively ORed (XORed) with the y1 value of an input symbol 212 of 1 symbol ago (“n−1”). This can be expressed as:

Y0=Y0(n−2)XOR Y1(n−1)   Equation 1:

Turning back to FIG. 3, within probabilistic evaluator 225, the value Ŷ0 of hard symbol 215 is compared to the predicted value of Ŷ0 derived from the previous two hard symbols 215 (specifically, the estimated values for Ŷ0 and Ŷ1 in these symbol iterations, as expressed above in Equation 1.). A mismatch between the predicted and the received values of the present symbol Ŷ0 is an indication of a decoding error (perhaps due to excess noise). A more likely accurate symbol value may then be obtained, as will be described in more detail below.

As mentioned above, slicer's 210 hard output Ŷ may be the hard symbol 215 {−7, −5, −3, −1, 1, 3, 5, or 7}, which is closest to the received symbol 212 (“Y”). With exception of the two cases {Y<=−7, and Y >=7}, the probability of making correct decision is given by:

$\begin{matrix} {{{P\left( {\overset{\Cap}{Y}=={correct}} \right)} = {\frac{1}{\sigma \sqrt{2\; \pi}}^{- \frac{{({Y - \hat{Y}})}^{2}}{2\; \sigma^{2}}}}},{and}} & {{Equation}\mspace{14mu} 2.} \\ {{P\left( {\overset{\Cap}{Y}=={{in}{correct}}} \right)} = {\frac{1}{\sigma \sqrt{2\; \pi}}^{\frac{{({Y - {\hat{Y} \pm 2}})}^{2}}{2\; \sigma^{2}}}}} & {{Equation}\mspace{14mu} 3.} \end{matrix}$

wherein Ŷ is the hard symbol 215 that is generated by slicer 210.

It should be noticed the one-to-one relation between making an error in Ŷ and making an error in LSB of Ŷ, that is, Ŷ(0) and vice versa. In other words, because the Ŷ(0) value determines if the Ŷ symbol should be one of two neighboring hard symbol 215, the percentage chance that a determined hard symbol 215 is the correct is the same percentage chance that its Ŷ0 value is correct. As will be detailed below, probabilistic evaluator 215 may give a more accurate estimation of Y0 received as input symbol 212, and therefore probabilistic evaluator 215 may give a better estimation of input symbol 212 as enhanced symbol 275.

On the other hand, one can notice that this relation is not true between Ŷ and the second LSB (Y1) (that there is a 1:1 correspondence in probabilities of the second bit of input symbol 212 being accurately decoded and the hard symbol 215 itself being accurately) only if:

{−5<=Y<=3, −1<=Y<=1, or 3<=Y<=1}

(that is, only if input symbol 212 falls within one of these ranges)

Otherwise the probability of making an error in y₁ is almost nill. In other words, with probability ⅝ there will be no errors in estimating Ŷ1 as Ŷ1 within hard symbol 215.

Within probabilistic evaluator 225, the estimated value of y0, the hard symbol 215 Ŷ0, is derived from the input symbol 212. For instance, if the received input symbol 212 is 2.2, then it is likely that the transmitted symbol was 3 and thus the hard symbol 215 value of Ŷ0 is 1.

There are, however, two probabilistic scenarios in the present example.

The first probabilistic scenario in the present example, is that received symbol 212 was originally transmitted as a 3, and therefore the received input symbol 212 correctly falls within the boundaries corresponding to 3 defined by slicer 210, thus Y0=1, and Ŷ1 correctly equals 1. The probability of this occurrence (assuming Gaussian noise) is given by:

Equation  4: $\mspace{20mu} {{{Prob}\left\lbrack {Y_{0} = 1} \right\rbrack} = {{{Prob}\text{[}{TxSym}} = {{3\left. {{RxSym} = 2.2} \right\rbrack} \propto ^{\frac{- {delta}^{2}}{2\; \sigma_{SNR}^{2}}}}}}$

Here, ‘delta’ is the “distance” between the soft symbol 255 and the nearest hard symbol 215 generated by the slicer 210, as will be illustrated in reference to FIG. 5. For ease of explanation, the logarithmic value of the probability is used, in order to remove the exponential terms.

The case discussed above is illustrated in FIG. 5: In FIG. 5, the RX symbol input symbol 212 is 2.2, and the delta is either ‘0.8’ (to hard symbol break 3), or ‘2-delta’ (to hard symbol break 1).

The second scenario, the transmitted symbol was originally a 1, and, due to such factors as AWGN, the received symbol 212 incorrectly falls within the boundaries corresponding to 3, thus incorrectly Ŷ0=0.

The probability of this occurrence (again, assuming Gaussian noise) is given by:

$\begin{matrix} \begin{matrix} {{{Prob}\left\lbrack {Y_{0} = 0} \right\rbrack} = {{{Prob}\text{[}{TxSym}} = {1{{RxSym}}}}} \\ {\left. {= 2.2} \right\rbrack \propto ^{\frac{- {{2 - {delta}}}^{2}}{2\; \sigma_{SNR}^{2}}}} \end{matrix} & {{Equation}\mspace{14mu} 5.} \end{matrix}$

Thus in general, given the distance (delta) between the soft symbol 145 and the hard symbol 215 (generated by the slicer 210), the probabilities of the 2 possible values for bit y0 as being decoded accurately in hard symbol Ŷ0 215 can be calculated as shown in Table 2, below.

TABLE 2 probability computations of y0 Range of input Estimated Value symbol 212 of y0 -ln(Prob [y0 = 0]) -ln(Prob [y0 = 1]) Y <= −7 0 0 Infinite −7 < Y <= −6 0 Δ² (2 − |Δ²|) −6 < Y < −4 1 (2 − |Δ²|) Δ² −4 <= Y < −2 0 Δ² (2 − |Δ²|) −2 <= Y < 0 1 (2 − |Δ²|) Δ² 0 <= Y < 2 0 Δ² (2 − |Δ²|) 2 <= Y < 4 1 (2 − |Δ²|) Δ² 4 <= Y < 6 0 Δ² (2 − |Δ²|) 6 <= Y < 7 1 (2 − |Δ²|) Δ² Y >= 7 1 Infinite 0

Generally, the probability of accuracy of decoding input symbol 212 value y0 correctly is calculated and stored by probabilistic evaluator 215 for further comparison with previous values of Ŷ(0) and Ŷ(1) values of hard symbols 215, as will be described below. In some embodiments, this performed by using soft symbol 255.

In some embodiments, probabilistic evaluator 215 also calculates the probability that y(1) value of the present input symbol 212 was decoded correctly. This probability will be used for later determinations as to whether a current hard symbol 215 being correctly decoded, as will be detailed below.

In, the device 200, the probability for the value of P(Ŷ)1 of the hard symbol 215 as an accurate is also calculated. The probability for the 2 possible values of y1 being decoded accurately is derived as a function of the received input symbol 212. For instance, if the received input symbol 212 is ‘−0.2’, then it is likely that the transmitted symbol to which input symbol 212 correlates was ‘−1,’ and the value of Ŷ1 within hard symbol 215 is also correctly a ‘1’.

There are however two probabilistic scenarios

In a first scenario, the probability of the received input symbol 212 being correct (assuming Gaussian noise) is given by:

Equation  6: $\mspace{20mu} {{{Prob}\left\lbrack {Y_{1} = 1} \right\rbrack} = {{{Prob}\text{[}{TxSym}} = {{{- 1}\left. {{RxSym} = {- 0.2}} \right\rbrack} \propto ^{\frac{- {delta}^{2}}{2\; \sigma_{SNR}^{2}}}}}}$

Here, ‘delta’ is the distance between the received symbol and the hard break, such as ‘−1’. For convenience, the logarithmic value of the probability is used, in order to remove the exponential terms.

The case discussed above is illustrated in FIG. 6. In FIG. 5, the RX symbol input symbol 212 is −0.2, and the delta is either ‘0.8’ (to hard symbol break 3), or ‘2-delta’ (to hard symbol break 1).

In a second scenario, the probability of the received input symbol being incorrect (assuming Gaussian noise) is given by:

$\begin{matrix} \begin{matrix} {{{Prob}\left\lbrack {Y_{0} = 0} \right\rbrack} = {{{Prob}\text{[}{TxSym}} = {1{{RxSym}}}}} \\ {\left. {= {- 0.2}} \right\rbrack \propto ^{\frac{- {{2 - {delta}}}^{2}}{2\; \sigma_{SNR}^{2}}}} \end{matrix} & {{Equation}\mspace{14mu} 7.} \end{matrix}$

Thus in general, the probabilities of the 2 possible values for bit y1 can be calculated as shown in Table 3 below.

TABLE 3 probability computations of y1 Range of input symbol Δ -ln(Prob [y1 = 0]) -ln(Prob [y1 = 1]) Y < −5 0 0 Infinite −5 <= Y < −3 Δ = Y + 5 Δ² (2 − |Δ|)² −3 <= Y < −1 0 infinite 0 −1 <= Y < 1 Δ = Y + 1 (2 − |Δ|)² Δ₁ ² 1 <= Y < 3 0 0 infinite 3 <= Y < 5 Δ = Y − 3 Δ² (2 − |Δ|)² Y >= 5 0 infinite 0

In the following explanation, (n) refers to a present Ŷ symbol 212, (n−1) refers to the previous Ŷ symbol 212, (n−2) refers to the second previous Ŷ symbol 212, and so on.

As mentioned above ŷ0(n)=y1(n−1)⊕y0(n−2), in other words, the transmitted input symbol 212 is a function of previous transmitted input symbols 212. The value Ŷ0 predicted can therefore be calculated in probabilistic evaluator 225, as will be discussed below. Therefore, ŷ0(n) can also be predicted as Ŷ0 _(predicted) as a function of the value of maximum probability among the two possibilities.

In the first case, the probability that a predicted ŷ0(n) value is correct can be calculated as follows

Prob(ŷ0(n)==1)=max {[Prob(y1(n−1)==1]*Prob((y0(n−2)==0], [Prob(y1(n−1)==0]*[Prob((y0(n−2)==1]}.

In other words, in some embodiments of the device 200, the probability of a predicted ŷ0(n) value being correct, based upon previous hard symbol 212 Ŷ(0) and Ŷ(1) values, is performed by first calculating the probability of Ŷ1 of (n−1) being correct, times the probability of Ŷ(0) of (n−2) being incorrect. This calculation is compared to the probability that Ŷ(n−1) value is incorrect, times the probability that Ŷ(0)(n−2) is correct. The larger of these two probabilities is the odds that the Ŷ(0)_(predicted) value was correctly predicted based off of previous Ŷ(0) and Ŷ(1) values.

As a collolary, in some embodiments of the device 200, the odds that the Ŷ(0)_(predicted) value is incorrect may be calculated as follows:

Prob(ŷ0(n)=0)=max{[Prob(y1(n−1)==0]*Prob([y0(n−2)==0],|[Prob(y1(n−1)==1]*[Prob((y0(n−2)==1]},

But, in ⅝ of the cases, as discussed above, the probability that (y1(n−1)==correct) is 1, as there is no error in estimating y1(n−1) as Ŷ1(n−1). Then, in these ⅝^(th) of cases (i.e. over 50% of the time), the probability that (ŷ0(n)) is correct will be equal to the probability that (y0(n−2) has been decoded correctly as Ŷ(0)(n−2).

In some embodiments, the probabilistic evaluator 225 compares the probability that Ŷ0(n−2) is correct base upon a predicted value,(i.e., that y0(n−2) has been decoded correctly) to create P(Ŷ(0)(n−2)_(predicted) with the probability (y0(n)==correct) as calculated for current hard symbol 215, and select the value. Then, probabilistic evaluator 225 selects as the Ŷ(0)_(enhanced) value for enhanced symbol 275 the y(0) value that has the higher probability of being accurate, either Ŷ(0) or Ŷ(0)_(predicted). Through use of this, the probabilistic evaluator may achieve better estimation for y0(n), and accordingly for Ŷ, on the average.

In general, Ŷ0 of hard symbol 215 and Ŷ0 _(predicted), will have the same value.

In some embodiments of the probabilistic calculator 215, calculating

$\begin{matrix} {{{P\left( {\overset{\Cap}{Y}=={correct}} \right)} = {\frac{1}{\sigma \sqrt{2\; \pi}}^{- \frac{{({Y - \hat{Y}})}^{2}}{2\; \sigma^{2}}}}},{and}} & \left( {{Equation}\mspace{14mu} 2} \right) \\ {{{P\left( {\overset{\Cap}{Y}=={{in}{correct}}} \right)} = {\frac{1}{\sigma \sqrt{2\; \pi}}^{- \frac{{({Y - {\hat{Y} \pm 2}})}^{2}}{2\; \sigma^{2}}}}},} & \left( {{Equation}\mspace{14mu} 3} \right) \end{matrix}$

for y(0) can be simplified as follows:

“−ln(x)” is monotonically proportional to 1/x, and:

$\begin{matrix} {\begin{matrix} {{- {\ln \left\lbrack {P\left( {\overset{\Cap}{Y}=={correct}} \right)} \right\rbrack}} = {{- {\ln \left( \frac{1}{\sigma \sqrt{2\; \pi}} \right)}} + \frac{\left( {{Y - \hat{Y}}} \right)^{2}}{2\; \sigma^{2}}}} \\ {= {\alpha + {\beta \cdot \Delta^{2}}}} \end{matrix}{and}} & {{Equation}\mspace{14mu} 6} \\ \begin{matrix} {{- {\ln \left\lbrack {P\left( {\overset{\Cap}{Y}=={{in}{correct}}} \right)} \right\rbrack}} = {{- {\ln \left( \frac{1}{\sigma \sqrt{2\; \pi}} \right)}} +}} \\ {\frac{\left( {2 - {{Y - \hat{Y}}}} \right)^{2}}{2\; \sigma^{2}}} \\ {= {\alpha + {\beta \cdot \left( {2 - {\Delta }} \right)^{2}}}} \end{matrix} & {{Equation}\mspace{14mu} 7} \end{matrix}$

Which can be re-written as:

−ln[P(Ŷ==correct)]/β=λ+Δ², and

−ln[P(Ŷ==incorrect)]/β=λ+(2−|Δ|)²

Where:

$\alpha = {\ln \left( {\sigma \cdot \sqrt{2\; \pi}} \right)}$ $\beta = \frac{1}{2\; \sigma^{2}}$ $\lambda = {\frac{\alpha}{\beta} = {2\; {\sigma^{2} \cdot {\ln \left( {\sigma \cdot \sqrt{2\; \pi}} \right)}}}}$ Δ = Y − Ŷ

Therefore, except for the bias λ, Δ² and (2−|Δ|)² can be used as a proportional values for −ln[P(Ŷ==correct)] and −ln[P(Ŷ==incorrect)] respectively. In addition, in some embodiments of the probabilistic calculator 215, this representation may replace the probability multiplication operations with direct addition. The only change may be selecting minimum values instead of maximum ones.

In some embodiments of probabilistic evaluator 215, the bias value of λ can be pre-calculated for different values of SNR and stored in a look up table) is added to Δ² _(n), before comparing with corresponding value for probability that (ŷ0(n)==correct).

FIG. 7 illustrates a method 700 for determining an enhanced symbol. In some embodiments, the enhanced symbol may be enhanced symbol 275.

In 310, a input symbol is received. In some embodiments, this may be input symbol 212.

In 320, a selected hard symbol is generated from the input symbol. In some embodiments, this may be hard symbol 215 is generated by slicer 210.

In 330, a probability is calculated associated with the hard symbol. In some embodiments, the probability may be the probability that Ŷ0 of the selected hard symbol 215is correct when compared to input symbol 212 y0. In some embodiments, the probability may further be the probability that Ŷ1 of the selected hard symbol 215 is correct when compared to input symbol y1 212.

In 340, a probability and a value is calculated that is associated with previous hard symbols. In some embodiments, the probability may be the probability that Ŷ0 of the hard symbol 215 of two symbols ago is correct. In some embodiments, the probability may further be the probability that Ŷ1 of the hard symbol 215 of one symbol ago is correct. In some embodiments, the value of Ŷ0 and Ŷ1 of previous symbols are also determined.

In 350, an enhanced symbol is determined as a function of a comparison between the probability associated with the present hard symbol and the previous hard symbol. In some embodiment, the Ŷ0 _(enhanced) bit of enhanced symbol 275 is selected from either the current hard symbol 215 or, as a result of the probability associated with a previously received hard symbol 215 that the Ŷ(0) bit of the probability of the (n−2) hard symbol 215 is correct.

Turning now to FIG. 8, illustrated is a method 800 for generating enhanced symbol 275. For ease of description, FIG. 8 will be described in reference to FIG. 9. FIG. 9 illustrates probabilistic evaluator 215 in more detail, according to some embodiments.

In 410, input symbol 212 is received. Input symbol 212 is then converted to soft symbol 255. Slicer 210 then converts soft symbol 255 to hard symbol 210. Slicer 210 then conveys hard symbol 215 to probabilistic determiner 225. In 225, input symbol 215 may be received at memory 510 of FIG. 9.

In 420, the soft symbol 255 is compared to the hard symbol 215, and the distance between may be calculated in a distance calculator and comparator 520. These values can be the bias λ, Δ² etc values that were described above. Distance measurements, etc. concerning Ŷ0 are conveyed to probability calculator 522 and distance measurements concerning Ŷ1 are conveyed to probability calculator 524.

In some embodiments, in 425, distance calculator 520 determines if soft symbol 255 and hard symbol 215 are within an acceptable tolerance of one another. If they are, in 480, hard symbol 215 becomes the enhanced symbol 275.

In 490, a next input symbol is received. In some embodiments, this may be input symbol 212. 490 receives the next input symbol 212, and loops back to 410. However, in some embodiments, if they are not close, 425 advances to 430.

Method 400 advances to 430. In 430, predicted value of Ŷ(0)_(predicted) for current hard symbol 25 “n” is calculated from the previous values of Ŷ1(n−1) and Y2(n−2). In some embodiments, this may be an exclusive OR (XOR) combination.

In some embodiments, in 430 a Ŷ(0)n−2 value is conveyed to XOR logic 570 from memory 545. The Ŷ(1)(n−1) value is conveyed to XOR logic 570 from memory 563. Then, within XOR logic 570, Ŷ(1)(n−1) and Ŷ(2)(n−2) values are XORed together. This XOR of these two values generates a “predicted” Ŷ(0)_(predicted) value.

In 430, it is determined whether predicted Ŷ(0)_(predicted) value equals the Ŷ(0) value received within hard symbol 215. In some embodiments, the Ŷ(0) value is conveyed from memory 541 to a comparator 580, and the Ŷ(0)_(predicted) value is also conveyed to comparator 580. If the Ŷ(0) and Ŷ(0)_(predicted) values, are equal, then this agreed-upon Ŷ(0) value is conveyed to an appender 595.

In some embodiments of 435, if comparator 580 determines that Ŷ(0) of hard symbol 215 does not equal Ŷ(0)_(predicted), comparator 580 sends a ‘trigger’ signal to a P(Ŷ(0)_(predicted) versus hard P(Y(0)) probability evaluator 590. Evaluator 590 then calculates a probability of correctness for probable Ŷ(0)_(probable) in 430, as will be described below.

435 advances to 430 if the Ŷ(0)_(predicted) value did not equal Ŷ(0) as received in hard symbol 215. In 430, there is calculated a probability for the hard symbol Ŷ(0) value being correct. In some embodiments, this calculation occurs in calculator 522. The Ŷ(0) value is conveyed to memory 541, and the P[Ŷ(0)] is conveyed to memory 531.

In 450, the probability that a previous value of Ŷ(0) for two hard symbols 215 ago (n−2) is correct calculated (i.e., P(Ŷ0)(n−2) is calculated.) In probabilistic evaluator 225, in some embodiments, probability calculator 522 calculates the probability, based upon such factors was calculated in distance calculator 520, that the hard symbol 215 Ŷ(0)(n−2) value is correct The probability of P(Ŷ(0)(n)) is correct is stored in 531, and the Ŷ(0) hard symbol 215 value itself is stored in 541. In some embodiments, probability values may be calculated with use of the variables illustrated in Table 1, above.

In some embodiments, probability calculations of correctness for Ŷ(0) are performed on each hard symbol 215 received by probabilistic evaluator 215. Therefore, the Ŷ(0) probability for hard symbol (n) 215 gets conveyed from memory 531 to memory 533, and becomes Ŷ(0) probability for (n−1). Similarly, Ŷ(0) value for hard symbol 215 n gets conveyed from memory 541 to memory 543, and becomes Ŷ(0) value for (n−1). Ŷ(0) probability for hard symbol (n−1) gets conveyed from memory 533 to memory 535, and becomes Ŷ(0) probability for (n−2). Similarly, Ŷ(0) value for hard symbol (n−1) gets conveyed from memory 543 to memory 545, and becomes Ŷ(0) value for (n−2).

In 460, the probability that a previous value of Ŷ(1) for one hard symbol 215 ago (n−1) is calculated. In probabilistic evaluator 225, in some embodiments, probability calculator 524 calculates the probability, based upon such factors as calculated in distance calculator 520, that the hard symbol 215 Ŷ(1) for the (n−1) value is correct. The probability of Ŷ(1) for (n) is correct is stored in 551, and the Ŷ(1) hard symbol 215 value itself is stored in 561. In some embodiments, probability values for Ŷ(2) may be calculated as illustrated in Table 2, above.

In some embodiments, probability calculations for Ŷ(1) is performed on each hard symbol 215 received by probabilistic evaluator 215. Therefore, Ŷ(1) probability for hard symbol 215 (n) gets conveyed from memory 551 to memory 553, and becomes Ŷ(1) probability for (n−1). Similarly, Ŷ(1) value for hard symbol 215 (n−1) gets conveyed from memory 561 to memory 563, and becomes Ŷ(1) value for hard symbol 215 (n−2). 460 advances to 470.

In 470, it is determined whether the value of Ŷ(0) of hard symbol 215 is more likely to be correct, or whether the value of Ŷ(0)_(predicted) is more likely to be correct. If hard symbol 215 Ŷ(0) has a greater probability of being accurate than the value of Ŷ(0)_(predicted), 470 advances to 480. If hard symbol 215 Ŷ(0) has a lesser probability of being accurate than the value of predicted Ŷ(0)_(predicted) 470 advances to 475.

In 475, predicted Ŷ(0)_(predicted) value is used as for the Ŷ(0)_(enhanced) value of enhanced symbol 475. In some embodiments, predicted Ŷ(0)_(predicted) is conveyed to aggregator 595. Predicted Ŷ(0)_(predicted) value is then used as the Y(0)_(enhanced) value in enhanced symbol 275, along with Ŷ(1) and Ŷ(2) of hard symbol 215.

In 480, in some embodiments, hard symbol Ŷ(0) 215 value, received from evaluator 590, is appended to Ŷ(0), Ŷ(1) values received from comparator 520 in aggregator 595. Then, hard Ŷ(0), Ŷ(1), and Ŷ(2) are output from aggregator 595 as enhanced symbol 275. 480 advances to 490.

FIG. 10 illustrates a simulated comparison in symbol error rate between device 100 device and the device 300. The improvement is about 2 dB in the range of SNR that may be of interest in the ATSC environment.

FIG. 11 illustrates a simulated comparison in convergence of filter coefficients. A terrestrial environment characterized by multipaths and varying degree of AWGN. For the same stimulus, the simulation is run for a device 100 and an device 300. As a measure of the convergence of each equalizer, the training error (defined as the error during the known preamble) is plotted in time. A converged equalizer should show a stable value of this error in time.

The training error is simulated for 3 consecutive field syncs for both device 100 and device 300. Device 100 starts diverging quickly, (e.g., the time to correct for error is increasing) and its coefficients do not converge. Device 300 r shows a stable training error across the same 3 field syncs, and its filter coefficients converge to a stable value.

The several embodiments described herein are solely for the purpose of illustration. Persons skilled in the art will recognize from this description that other embodiments may be practiced with modifications and alterations limited only by the claims. 

1. A method, comprising: receiving an input symbol; generating a hard symbol from the input symbol; calculating a probability associated with the hard symbol; calculating a probability associated with a previous hard symbol; and determining an enhanced symbol as a function of a comparison between the probability associated the hard symbol and the previous hard symbol.
 2. The method of claim 1, further comprising: applying a slicer to the received input symbol; and generating the hard symbol at the slicer.
 3. The method of claim 1, further comprising generating a soft symbol as a function of the received input symbol; and generating the hard symbol from the soft symbol.
 4. The method of claim 3, further comprising: calculating a distance between the soft symbol and the hard symbol; and calculating the probability associated with the hard symbol as a function of the distance.
 5. The method of claim 1, wherein a parity bit of the input symbol is a function of two previous input symbols.
 6. The method of claim 1, wherein: the hard symbol comprises at least three bits; and the probability associated with the hard symbol is evaluated as a function of a parity bit of the hard symbol.
 7. The method of claim 1, wherein calculating the probability associated with the previous hard symbol further comprises calculating a probability associated with a parity bit of the previous hard symbol.
 8. The method of claim 7, wherein the previous hard symbol is correlates to a first of two previous input symbols before the input symbol.
 9. The method of claim 7, wherein calculating the probability associated with the hard symbol further comprises comparing the probability associated with the parity bit of the hard symbol with the probability associated with the parity bit of the previous hard symbol.
 10. The method of claim 1, further comprising: generating a predicted value of a parity bit of the hard symbol.
 11. The method of claim 10, wherein generating the predicted value of the parity bit further comprises performing an exclusive OR operation upon the parity bit of the previous hard symbol with a non-parity bit of a second previous hard symbol.
 12. The method of claim 11, further comprising: selecting either the hard symbol parity bit or the predicted parity bit as a parity bit of the enhanced symbol as a function of whether the hard symbol parity bit has a higher probability of being correct than the predicted parity bit.
 13. An apparatus, comprising: a distance calculator for calculating a distance between a hard symbol and a soft symbol; a parity bit probabilistic determinor for calculating a probability that a parity bit of the hard symbol is accurate as a function of at least an output of the distance calculator; a memory for storing a non-parity bit of a previous hard symbol; a comparator to compare the non-parity bit of the previous hard symbol to the parity bit of the hard symbol, wherein the comparator is to trigger an evaluator if the non-parity bit of the previous hard symbol is not equal to the parity bit of the hard symbol, and the evaluator is to evaluate if the probability that the parity bit of the hard symbol is accurate in greater than a probability that the parity bit of the previous hard symbol is accurate.
 14. The apparatus of claim 13, wherein the parity bit probabilistic determiner is to further determine the probability that a parity bit of the previous hard symbol is accurate.
 15. The apparatus of claim 13, wherein the evaluator is to output either the parity bit of the hard symbol or the parity bit of the previous hard symbol as a function of this evaluation.
 16. The memory of claim 13, wherein the memory may comprises a double rate memory.
 17. A system, comprising: a slicer; a probabilistic determiner coupled to the slicer, the probabilistic determiner to generate an enhanced symbol from a hard symbol of the slicer; a digitally programmed filter; a filter programmer coupled to the digitally programmed filter, the filter programmer to program the digitally programmed filter as a function of the enhanced symbol.
 18. The system of claim 17, wherein to program the digitally programmed filtered as a function of the enhanced symbol further comprises generating an error signal from at least the enhanced symbol to be used to help program the digital filter.
 19. The system of claim 17, wherein the probabilistic determinor is to evaluate a probability associated with a hard symbol generated by the slicer before generating the enhanced symbol.
 20. The system of claim 17, wherein the probabilistic determiner evaluates a probability associated with a previous hard symbol generated by the slicer when generating the enhanced symbol. 